package persistencia;

import java.util.List;

import logica.Area;
import logica.UsuarioRegistrado;
import excepciones.DAOExcepcion;

//**************************************************************************** 
// Data Access Layer. Capa de indirecci�n para gestionar el acceso a datos 
//**************************************************************************** 
public class DAL {

	private static DAL dal;
	private IUsuarioRegistradoDAO urDAO;
	private IAreaDAO areaDAO;

	// contructor privado
	private DAL() throws DAOExcepcion {
		// Objectos para comunicarse con la capa de acceso a datos
		urDAO = new UsuarioRegistradoDAOImp();
		areaDAO = new AreaDAOImp();
	}

	// ****************************************************************************
	// Para el C.U. Crear Usuario Registrado
	// ****************************************************************************
	public UsuarioRegistrado encontrarUsuarioRegistradoPorNombreUsuario(
			String nombre) throws DAOExcepcion {
		return urDAO.encontrarUsuarioRegistradoPorNombreUsuario(nombre);
	}

	public void crearUsuarioRegistrado(UsuarioRegistrado ur)
			throws DAOExcepcion {
		urDAO.crearUsuarioRegistrado(ur);
	}

	public UsuarioRegistrado encontrarUsuarioRegistradoPorNif(String nif)
			throws DAOExcepcion {
		return urDAO.encontrarUsuarioRegistradoPorNif(nif);
	}

	// ****************************************************************************
	// Para el C.U. Mostrar Usuarios Registrados
	// ****************************************************************************
	public List<UsuarioRegistrado> encontrarUsuariosRegistrados()
			throws DAOExcepcion {
		return urDAO.encontrarUsuariosRegistrados();
	}

	// ****************************************************************************
	// Para el C.U. Crear Area
	// ****************************************************************************
	public Area encontrarAreaPorNombre(String nombre) throws DAOExcepcion {
		return areaDAO.encontrarAreaPorNombre(nombre);
	}

	public void crearArea(Area ur) throws DAOExcepcion {
		areaDAO.crearArea(ur);
	}

	// ****************************************************************************
	// Para el C.U. Mostrar Area
	// ****************************************************************************

	public List<Area> encontrarAreas() throws DAOExcepcion {
		return areaDAO.getAreaList();
	}

	// Patr�n Singleton
	public static DAL dameDAL() throws DAOExcepcion {
		if (dal == null)
			dal = new DAL();
		return dal;
	}

}